package com.example.temp.mapper;

import com.example.temp.entity.Question;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;

@Mapper
public interface QuestionMapper {

    /**
     * 插入问题
     * @param question 问题对象
     * @return 插入的记录数
     */
    int insert(Question question);

    // 获取所有问题类型
    @Select("SELECT DISTINCT type FROM questions")
    List<String> acquireTypes();

    // 根据ID查询问题
    @Select("SELECT * FROM questions WHERE id = #{id}")
    Question queryQuestion(int id);

    // 根据ID获取问题
    @Select("SELECT * FROM questions WHERE id = #{id}")
    Question getByID(@Param("id") Integer id);

    // 更新问题
    @Update("UPDATE questions SET type = #{type}, answer_time = #{answerTime}, question_text = #{questionText}, " +
            "answer = #{answer}, teacher_id = #{teacherId},score = #{score} WHERE id = #{id}")
    int update(Question question);

    // 分页查询问题
    List<Question> search(Map<String, Object> params);

    // 获取问题总数
    int getTotal(Map<String, Object> params);

    // 删除问题
    @Delete("DELETE FROM questions WHERE id = #{id}")
    int delete(int id);

    int batchInsert(@Param("list") List<Question> questions);

    
    /**
     * 根据ID列表批量删除问题
     * @param questionIds 问题ID列表
     * @return 删除的记录数
     */
    int deleteByIds(@Param("questionIds") List<Integer> questionIds);

    /**
     * 根据ID列表批量查询问题
     * @param questionIds ID列表
     * @return 问题列表
     */
    List<Question> findByIds(@Param("list") List<Integer> questionIds);
    
    /**
     * 根据ID查询单个问题
     * @param id 问题ID
     * @return 问题对象
     */
    Question selectById(@Param("id") Integer id);
    
    /**
     * 根据教师ID查询该教师发布的所有问题
     * @param teacherId 教师ID
     * @return 问题列表
     */
    @Select("SELECT * FROM questions WHERE teacher_id= #{teacherId}")
    List<Question> findByTeacherId(String teacherId);
}